def 打印收据():
    # 商品信息
    商品列表 = [
        {"名称": "金士顿U盘8G", "数量": 1, "单价": 40.00},
        {"名称": "胜创16GTF卡", "数量": 1, "单价": 50.00},
        {"名称": "读卡器", "数量": 1, "单价": 8.00},
        {"名称": "网线2米", "数量": 1, "单价": 5.00},
        {"名称": "苹果17", "数量": 2, "单价": 5500.00}
    ]

    # 计算金额
    总金额 = sum(商品["数量"] * 商品["单价"] for 商品 in 商品列表)
    折扣率 = 0.9
    折扣后金额 = 总金额 * 折扣率
    找零金额 = 0.00  # 找零金额
    收据宽度 = 50
    分隔线 = "-" * 收据宽度

    # 打印头部
    print("\n" + 分隔线)
    print(f"{'便民超市购物单':^{收据宽度}}")
    print(分隔线)
    print(f"{'单号: DH202311010001':<{收据宽度}}")
    print(f"{'时间: 2023-11-01 20:56:15':<{收据宽度}}")
    print(分隔线)
    # 精确设置各列宽度，使单价和金额列对齐更准确
    print(f"{'商品名称':<15}{'数量':^8}{'单价':^10}{'金额':^12}")
    print(分隔线)

    # 打印商品明细，严格控制单价和金额的格式，确保上下对齐
    for 商品 in 商品列表:
        单项金额 = 商品["数量"] * 商品["单价"]
        print(f"{商品['名称']:<15}{商品['数量']:^8d}{商品['单价']:^10.2f}{单项金额:^12.2f}")

    print(分隔线)

    # 下半部分排版，调整各部分的对齐和宽度
    print(f"{'商品总数: 5':<15}{'原价总计:':<10}{总金额:>10.2f}")
    print(f"{'优惠折扣: 9折':<15}{'折后金额:':<10}{折扣后金额:>10.2f}")
    print(f"{'实收金额:':<15}{'找零金额:':<10}{找零金额:>10.2f}")
    print(分隔线)
    # 调整“感谢光临”的位置，使其在虚线内且对齐
    print(f"{'收银员: 臭瘤子':<25}{'感谢光临':>20}")
    print(分隔线 + "\n")

if __name__ == "__main__":
    打印收据()
    